bitkeeper revision 1.1389.19.5 (42833116hOft6cekTRSGqSIk2tNzGA)
authorrusty@rustcorp.com.au[kaf24] <rusty@rustcorp.com.au[kaf24]>
Thu, 12 May 2005 10:33:58 +0000 (10:33 +0000)
committerrusty@rustcorp.com.au[kaf24] <rusty@rustcorp.com.au[kaf24]>
Thu, 12 May 2005 10:33:58 +0000 (10:33 +0000)
[PATCH] [PATCH] libxc: mmap doesn't return NULL on error...

Hi, was reading libxc code, and noticed this.  Patch is bigger than
strictly necessary due to indent adjust.

Against latest bk.
Rusty.

BitKeeper/etc/logging_ok
tools/libxc/xc.h
tools/libxc/xc_private.c

index 379ce87a7276ecd8ce79defefb18bc1ec5dad8cb..3cdc0126d1996a874c9889239613a16feeb10389 100644 (file)
@@ -80,6 +80,7 @@ rn@wyvis.camb.intel-research.net
 rn@wyvis.research.intel-research.net
 rneugeba@wyvis.research
 rneugeba@wyvis.research.intel-research.net
+rusty@rustcorp.com.au
 ryanh@us.ibm.com
 sd386@font.cl.cam.ac.uk
 shand@spidean.research.intel-research.net
index 913581fe9d6fd8ce9b81c32404b3cf39da26a55f..3b464eb6838877903947009e1f4370f18b974717 100644 (file)
@@ -421,7 +421,7 @@ int xc_msr_write(int xc_handle, int cpu_mask, int msr, unsigned int low,
 /**
  * Memory maps a range within one domain to a local address range.  Mappings
  * should be unmapped with munmap and should follow the same rules as mmap
- * regarding page alignment.
+ * regarding page alignment.  Returns NULL on failure.
  *
  * In Linux, the ring queue for the control channel is accessible by mapping
  * the shared_info_frame (from xc_domain_getinfo()) + 2048.  The structure
index 39318bc4faf12d7838b656c1e5b2180d77748665..550989e3e0109e0d70a0e2c5e5e688d49d37a274 100644 (file)
@@ -13,18 +13,18 @@ void *xc_map_foreign_batch(int xc_handle, u32 dom, int prot,
     privcmd_mmapbatch_t ioctlx; 
     void *addr;
     addr = mmap(NULL, num*PAGE_SIZE, prot, MAP_SHARED, xc_handle, 0);
-    if ( addr != NULL )
+    if ( addr == MAP_FAILED )
+       return NULL;
+
+    ioctlx.num=num;
+    ioctlx.dom=dom;
+    ioctlx.addr=(unsigned long)addr;
+    ioctlx.arr=arr;
+    if ( ioctl( xc_handle, IOCTL_PRIVCMD_MMAPBATCH, &ioctlx ) < 0 )
     {
-        ioctlx.num=num;
-        ioctlx.dom=dom;
-        ioctlx.addr=(unsigned long)addr;
-        ioctlx.arr=arr;
-        if ( ioctl( xc_handle, IOCTL_PRIVCMD_MMAPBATCH, &ioctlx ) < 0 )
-        {
-            perror("XXXXXXXX");
-            munmap(addr, num*PAGE_SIZE);
-            return 0;
-        }
+       perror("XXXXXXXX");
+       munmap(addr, num*PAGE_SIZE);
+       return NULL;
     }
     return addr;
 
@@ -40,19 +40,19 @@ void *xc_map_foreign_range(int xc_handle, u32 dom,
     privcmd_mmap_entry_t entry; 
     void *addr;
     addr = mmap(NULL, size, prot, MAP_SHARED, xc_handle, 0);
-    if ( addr != NULL )
+    if ( addr == MAP_FAILED )
+       return NULL;
+
+    ioctlx.num=1;
+    ioctlx.dom=dom;
+    ioctlx.entry=&entry;
+    entry.va=(unsigned long) addr;
+    entry.mfn=mfn;
+    entry.npages=(size+PAGE_SIZE-1)>>PAGE_SHIFT;
+    if ( ioctl( xc_handle, IOCTL_PRIVCMD_MMAP, &ioctlx ) < 0 )
     {
-        ioctlx.num=1;
-        ioctlx.dom=dom;
-        ioctlx.entry=&entry;
-        entry.va=(unsigned long) addr;
-        entry.mfn=mfn;
-        entry.npages=(size+PAGE_SIZE-1)>>PAGE_SHIFT;
-        if ( ioctl( xc_handle, IOCTL_PRIVCMD_MMAP, &ioctlx ) < 0 )
-        {
-            munmap(addr, size);
-            return 0;
-        }
+       munmap(addr, size);
+       return NULL;
     }
     return addr;
 }